package com.ssm.helong.shop.controller;

import com.ssm.helong.shop.common.ServiceResultEnum;
import com.ssm.helong.shop.util.*;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*;


/***
 * aly的短信服务
 * @Author: helong.sun
 * @Date: 2021/4/24
 */

@RestController
@RequestMapping("/send")
public class SmsApiController {
    private static final Logger logger = LoggerFactory.getLogger(SmsApiController.class);

    RedisUtils redisUtils = RedisUtils.getRedisUtil();

    @GetMapping("phone")
    public Result send4Login(String userPhone) {
        try {
            //生成短信验证码
            String code = ValidateCodeUtils.generateValidateCode4String(6);
            // 要这样写 理由1.比System性能好，甚至支持异步输出 2.这样的日志可以生成log文件，可以追溯 3.大公司可以根据log做用户追溯分析，甚至抓取有用的数据，比如 手机号。。。
            logger.info("{}:生成的短信验证码为:{}", userPhone, code);
            //调用阿里云的发送短信的服务
            SMSUtils.sendShortMessage(userPhone, code);
            //验证码存入Redis, 加入过期时间, 用于后期的验证码对比
            redisUtils.setex(userPhone, 30, code);
            //发送短信验证码成功, 返回成功信息
            return ResultGenerator.genFailResult(ServiceResultEnum.LOGIN_VERIFY_CODE_SUCCESS.getResult());
        } catch (Exception e) {
            e.printStackTrace();
            //发送短信验证码失败, 返回失败信息
            return ResultGenerator.genFailResult(ServiceResultEnum.LOGIN_VERIFY_CODE_ERR.getResult());
        }
    }
}
